/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.baladaboa.ws.core;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author Leone
 */
@Entity
@Table(name = "casa", catalog = "dbbaladaboa", schema = "")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Casa.findAll", query = "SELECT c FROM Casa c"),
    @NamedQuery(name = "Casa.findByIdcasa", query = "SELECT c FROM Casa c WHERE c.idcasa = :idcasa"),
    @NamedQuery(name = "Casa.findBySite", query = "SELECT c FROM Casa c WHERE c.site = :site"),
    @NamedQuery(name = "Casa.findByNumCapacidade", query = "SELECT c FROM Casa c WHERE c.numCapacidade = :numCapacidade"),
    @NamedQuery(name = "Casa.findByNumAmbiente", query = "SELECT c FROM Casa c WHERE c.numAmbiente = :numAmbiente"),
    @NamedQuery(name = "Casa.findByFlgPublicoHetero", query = "SELECT c FROM Casa c WHERE c.flgPublicoHetero = :flgPublicoHetero"),
    @NamedQuery(name = "Casa.findByFlgPublicoGls", query = "SELECT c FROM Casa c WHERE c.flgPublicoGls = :flgPublicoGls"),
    @NamedQuery(name = "Casa.findByFlgEstacionamento", query = "SELECT c FROM Casa c WHERE c.flgEstacionamento = :flgEstacionamento"),
    @NamedQuery(name = "Casa.findByFlgManobrista", query = "SELECT c FROM Casa c WHERE c.flgManobrista = :flgManobrista"),
    @NamedQuery(name = "Casa.findByFlgwAreavip", query = "SELECT c FROM Casa c WHERE c.flgwAreavip = :flgwAreavip"),
    @NamedQuery(name = "Casa.findByNome", query = "SELECT c FROM Casa c WHERE c.nome = :nome"),
    @NamedQuery(name = "Casa.findByFlgAtivo", query = "SELECT c FROM Casa c WHERE c.flgAtivo = :flgAtivo")})
public class Casa implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idcasa", nullable = false)
    private Integer idcasa;
    @Size(max = 50)
    @Column(name = "site", length = 50)
    private String site;
    @Basic(optional = false)
    @NotNull
    @Column(name = "num_capacidade", nullable = false)
    private int numCapacidade;
    @Basic(optional = false)
    @NotNull
    @Column(name = "num_ambiente", nullable = false)
    private int numAmbiente;
    @Basic(optional = false)
    @NotNull
    @Column(name = "flg_publico_hetero", nullable = false)
    private boolean flgPublicoHetero;
    @Basic(optional = false)
    @NotNull
    @Column(name = "flg_publico_gls", nullable = false)
    private boolean flgPublicoGls;
    @Basic(optional = false)
    @NotNull
    @Column(name = "flg_estacionamento", nullable = false)
    private boolean flgEstacionamento;
    @Basic(optional = false)
    @NotNull
    @Column(name = "flg_manobrista", nullable = false)
    private boolean flgManobrista;
    @Basic(optional = false)
    @NotNull
    @Column(name = "flgw_areavip", nullable = false)
    private boolean flgwAreavip;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 100)
    @Column(name = "nome", nullable = false, length = 100)
    private String nome;
    @Basic(optional = false)
    @NotNull
    @Column(name = "flg_ativo", nullable = false)
    private boolean flgAtivo;
    @ManyToMany(mappedBy = "casaList")
    private List<Servico> servicoList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "casaIdcasa")
    private List<PontoOnibus> pontoOnibusList;
    @JoinColumn(name = "plano_idplano", referencedColumnName = "idplano", nullable = false)
    @ManyToOne(optional = false)
    private Plano planoIdplano;
    @JoinColumn(name = "tipo_casa_idtipo_casa", referencedColumnName = "idtipo_casa", nullable = false)
    @ManyToOne(optional = false)
    private TipoCasa tipoCasaIdtipoCasa;
    @JoinColumn(name = "cliente_idcliente", referencedColumnName = "idcliente", nullable = false)
    @ManyToOne(optional = false)
    private Cliente clienteIdcliente;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "casaIdcasa")
    private List<PontoTaxi> pontoTaxiList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "casaIdcasa")
    private List<Recebimento> recebimentoList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "casaIdcasa")
    private List<Evento> eventoList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "casaIdcasa")
    private List<Arquivo> arquivoList;
    @OneToMany(mappedBy = "casaIdcasa")
    private List<Sugestoes> sugestoesList;

    public Casa() {
    }

    public Casa(Integer idcasa) {
        this.idcasa = idcasa;
    }

    public Casa(Integer idcasa, int numCapacidade, int numAmbiente, boolean flgPublicoHetero, boolean flgPublicoGls, boolean flgEstacionamento, boolean flgManobrista, boolean flgwAreavip, String nome, boolean flgAtivo) {
        this.idcasa = idcasa;
        this.numCapacidade = numCapacidade;
        this.numAmbiente = numAmbiente;
        this.flgPublicoHetero = flgPublicoHetero;
        this.flgPublicoGls = flgPublicoGls;
        this.flgEstacionamento = flgEstacionamento;
        this.flgManobrista = flgManobrista;
        this.flgwAreavip = flgwAreavip;
        this.nome = nome;
        this.flgAtivo = flgAtivo;
    }

    public Integer getIdcasa() {
        return idcasa;
    }

    public void setIdcasa(Integer idcasa) {
        this.idcasa = idcasa;
    }

    public String getSite() {
        return site;
    }

    public void setSite(String site) {
        this.site = site;
    }

    public int getNumCapacidade() {
        return numCapacidade;
    }

    public void setNumCapacidade(int numCapacidade) {
        this.numCapacidade = numCapacidade;
    }

    public int getNumAmbiente() {
        return numAmbiente;
    }

    public void setNumAmbiente(int numAmbiente) {
        this.numAmbiente = numAmbiente;
    }

    public boolean getFlgPublicoHetero() {
        return flgPublicoHetero;
    }

    public void setFlgPublicoHetero(boolean flgPublicoHetero) {
        this.flgPublicoHetero = flgPublicoHetero;
    }

    public boolean getFlgPublicoGls() {
        return flgPublicoGls;
    }

    public void setFlgPublicoGls(boolean flgPublicoGls) {
        this.flgPublicoGls = flgPublicoGls;
    }

    public boolean getFlgEstacionamento() {
        return flgEstacionamento;
    }

    public void setFlgEstacionamento(boolean flgEstacionamento) {
        this.flgEstacionamento = flgEstacionamento;
    }

    public boolean getFlgManobrista() {
        return flgManobrista;
    }

    public void setFlgManobrista(boolean flgManobrista) {
        this.flgManobrista = flgManobrista;
    }

    public boolean getFlgwAreavip() {
        return flgwAreavip;
    }

    public void setFlgwAreavip(boolean flgwAreavip) {
        this.flgwAreavip = flgwAreavip;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public boolean getFlgAtivo() {
        return flgAtivo;
    }

    public void setFlgAtivo(boolean flgAtivo) {
        this.flgAtivo = flgAtivo;
    }

    @XmlTransient
    public List<Servico> getServicoList() {
        return servicoList;
    }

    public void setServicoList(List<Servico> servicoList) {
        this.servicoList = servicoList;
    }

    @XmlTransient
    public List<PontoOnibus> getPontoOnibusList() {
        return pontoOnibusList;
    }

    public void setPontoOnibusList(List<PontoOnibus> pontoOnibusList) {
        this.pontoOnibusList = pontoOnibusList;
    }

    public Plano getPlanoIdplano() {
        return planoIdplano;
    }

    public void setPlanoIdplano(Plano planoIdplano) {
        this.planoIdplano = planoIdplano;
    }

    public TipoCasa getTipoCasaIdtipoCasa() {
        return tipoCasaIdtipoCasa;
    }

    public void setTipoCasaIdtipoCasa(TipoCasa tipoCasaIdtipoCasa) {
        this.tipoCasaIdtipoCasa = tipoCasaIdtipoCasa;
    }

    public Cliente getClienteIdcliente() {
        return clienteIdcliente;
    }

    public void setClienteIdcliente(Cliente clienteIdcliente) {
        this.clienteIdcliente = clienteIdcliente;
    }

    @XmlTransient
    public List<PontoTaxi> getPontoTaxiList() {
        return pontoTaxiList;
    }

    public void setPontoTaxiList(List<PontoTaxi> pontoTaxiList) {
        this.pontoTaxiList = pontoTaxiList;
    }

    @XmlTransient
    public List<Recebimento> getRecebimentoList() {
        return recebimentoList;
    }

    public void setRecebimentoList(List<Recebimento> recebimentoList) {
        this.recebimentoList = recebimentoList;
    }

    @XmlTransient
    public List<Evento> getEventoList() {
        return eventoList;
    }

    public void setEventoList(List<Evento> eventoList) {
        this.eventoList = eventoList;
    }

    @XmlTransient
    public List<Arquivo> getArquivoList() {
        return arquivoList;
    }

    public void setArquivoList(List<Arquivo> arquivoList) {
        this.arquivoList = arquivoList;
    }

    @XmlTransient
    public List<Sugestoes> getSugestoesList() {
        return sugestoesList;
    }

    public void setSugestoesList(List<Sugestoes> sugestoesList) {
        this.sugestoesList = sugestoesList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idcasa != null ? idcasa.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Casa)) {
            return false;
        }
        Casa other = (Casa) object;
        if ((this.idcasa == null && other.idcasa != null) || (this.idcasa != null && !this.idcasa.equals(other.idcasa))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "br.com.baladaboa.ws.core.Casa[ idcasa=" + idcasa + " ]";
    }
    
}
